AWS BackupでEC2インスタンスのバックアップ作成と削除を自動化してみた
こんにちは、オペレーション部の橋本です。
AWS BackupでのEC2インスタンスのバックアップライフサイクルが、実際どのように動作するのか気になったので検証してみました。
今回設定すること
下記の要件で動作するように設定します。
- EC2インスタンスのバックアップをAMIで取得する
- バックアップの送信先リージョンは、元のEC2インスタンスが稼働しているのとは別のリージョンとする
- バックアップ取得のタイミングは毎日
- 取得したバックアップの有効期限は3日
- 有効期限切れのバックアップ(AMI)は自動削除する
バックアップ作成のための設定
それでは、実際に設定していきます。
なお、前提としてバックアップ元のEC2インスタンスは既に作成済みとします。
設定手順に関しては、下記のAWSドキュメント及びDevelopers.IOの記事を参考にしています。
バックアップのルール設定
バックアッププランの作成
今回は「バックアッププランを管理」から作成します。
こちらを選択することで、バックアップウインドウやバックアップ後リソースのコピー先リージョンの設定等、詳細な設定が可能です。
「オンデマンドバックアップを作成」をクリックした場合は、クイックセットアップの画面が起動します。
細かな設定はさておき、手早くAWS Backupのざっくりした機能を試してみたい方はこちらからスタートしてもよいかと思います。
「バックアップの作成」をクリックします。
「起動オプション」の項目を設定していきます。
「開始する方法を選択してください」にて、「新しいプランを立てる」選択します。
「バックアップルールの設定」の項目では、バックアップの取得頻度や取得後の有効期限について設定可能です。
バックアップ取得頻度は「毎日」とし、バックアップウィンドウを指定しています。
バックアップウィンドウの開始時間はUTC時間での設定になる点に注意してください(時差は-9時間)。
「バックアップウィンドウのデフォルトを使用」を選択した場合、UTC時間の05:00〜13:00に設定されます。
「有効期限切れ」で、取得したバックアップを保管する期間を設定します。
今回は「バックアップボールト」はDefaultを利用しますが、この画面から新規に作成することも可能です。
「リージョンにコピー」では、取得したバックアップのコピー要否とコピー先のリージョンを指定できます。
オプションでタグの設定を行い、「プランの作成」をクリックします。
バックアップ対象のリソース指定
「リソースの割り当て」で、下記を設定します。
- バックアップの作成に利用するIAMロール
- バックアップ対象のリソース
IAMロールは「デフォルトのロール」を選択します。
デフォルトのロールを初めて作成する場合、リソースの割り当てを行った段階で「AWSBackupDefaultServiceRole」のIAMロールが作成されます。
自動作成されるデフォルトのIAMロールには、バックアップの復元と削除に必要な権限が不足していたため、インラインポリシーを追加します。(2020年4月末時点)
自動作成されるロールにアタッチされている権限
- AWSBackupServiceRolePolicyForBackup
- AWSBackupServiceRolePolicyForRestores
インラインポリシーで追加する権限
- バックアップの復旧に必要な権限
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*" } ] }
- 有効期限切れによるバックアップの自動削除に必要な権限
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeFastSnapshotRestores", "Resource": "*" } ] }
バックアップ結果の確認
設定から4日後に結果を確認すると、復旧ポイントとAMIの作成を確認できました。
復旧ポイントの確認
AMIの確認
さらに数日後にAMIの状況を確認したところ、AMIの数は維持され、古いものから削除されていました。
おわりに
AWS Backupを利用すると、手軽にバックアップの取得やライフサイクルの設定ができ、とても便利です。利用できるリソースはどんどん増えていっているので、今後も楽しみにしたいですね!